环境准备
python3.7
paddlepaddle
paddle2onnx
安装paddle2onnx
1 | pip install paddle2onnx |
命令行转化
准备好 paddlepaddle 训练好的模型文件
1 | D:\vsCodeWorkspace\python20230512paddleNumber\testfive\mnist_checkpoint\test.pdiparams |
执行命令
1 | paddle2onnx --model_dir D:\vsCodeWorkspace\python20230512paddleNumber\testfive\mnist_checkpoint --model_filename test.pdmodel --params_filename test.pdiparams --opset_version 11 --save_file ./onnx/test.onnx |
注意 model_filename 和 params_filename 虽标注为可选项,但实际测试中发现若无此参数会报错
参数说明:
https://github.com/PaddlePaddle/Paddle2ONNX
参数 | 参数说明 |
---|---|
–model_dir | 配置包含 Paddle 模型的目录路径 |
–model_filename | [可选] 配置位于 --model_dir 下存储网络结构的文件名 |
–params_filename | [可选] 配置位于 --model_dir 下存储模型参数的文件名称 |
–save_file | 指定转换后的模型保存目录路径 |
–opset_version | [可选] 配置转换为 ONNX 的 OpSet 版本,目前支持 7~16 等多个版本,默认为 9 |
–enable_dev_version | [可选] 是否使用新版本 Paddle2ONNX(推荐使用),默认为 True |
–enable_onnx_checker | [可选] 配置是否检查导出为 ONNX 模型的正确性, 建议打开此开关, 默认为 False |
–enable_auto_update_opset | [可选] 是否开启 opset version 自动升级功能,当低版本 opset 无法转换时,自动选择更高版本的 opset进行转换, 默认为 True |
–deploy_backend | [可选] 量化模型部署的推理引擎,支持 onnxruntime、tensorrt 或 others,当选择 others 时,所有的量化信息存储于 max_range.txt 文件中,默认为 onnxruntime |
–save_calibration_file | [可选] TensorRT 8.X版本部署量化模型需要读取的 cache 文件的保存路径,默认为 calibration.cache |
–version | [可选] 查看 paddle2onnx 版本 |
–external_filename | [可选] 当导出的 ONNX 模型大于 2G 时,需要设置 external data 的存储路径,推荐设置为:external_data |
–export_fp16_model | [可选] 是否将导出的 ONNX 的模型转换为 FP16 格式,并用 ONNXRuntime-GPU 加速推理,默认为 False |
–custom_ops | [可选] 将 Paddle OP 导出为 ONNX 的 Custom OP,例如:–custom_ops ‘{“paddle_op”:”onnx_op”},默认为 {} |
- 使用 onnxruntime 验证转换模型, 请注意安装最新版本(最低要求 1.10.0)
执行结果如下
1 | [Paddle2ONNX] Start to parse PaddlePaddle model... |
获得onnx 的输出文件
1 | D:\vsCodeWorkspace\python20230512paddleNumber\testfive\onnx\test.onnx |
代码方式转化
1 | import os |
输出
1 |
|
保存文件的地址
1 | D:\vsCodeWorkspace\pythonpaddleNumber\testfive\onnxSave\linear_net.onnx |
模型验证
1 | # 导入 ONNX 库 |
运行之后 onnx.checker.check_model 不报错则证明没有任何问题
报错问题解决
问题1
将训练的模型转化为.onnx文件,然而,在模型验证的时候报错,错误如下:
1 | ValidationError: Your model ir_version is higher than the checker's |
解决问题1
原因:版本不匹配
需要升级一下onnx
1 | pip install --upgrade onnx -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com |
升级之后就不会报错了。
一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;